﻿using Onshi.POS.Formularios.Properties;
using Onshi.POS.Formularios.Recursos;
using Onshi.POS.Modelo.Enumeradores;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Onshi.POS.Compras.Vistas;
using Onshi.POS.Compras;
using Onshi.POS.Modelo.Objectos;
using System.IO;
using Onshi.POS.Modelo.Entidades;
using Onshi.POS.Modelo.Entidades.Tipos;
using System.Configuration;

namespace Onshi.POS.Formularios
{
    public partial class ComprasAlta : FormularioBase, IComprasAlta
    {
        #region Constructores

        public ComprasAlta()
        {
            InitializeComponent();
            Text = "Nueva compra";
            presentador = new ComprasAltaPresentador(this);
        }

        #endregion

        #region Atributos

        private ComprasAltaPresentador presentador;
        private Int32 idCliente;

        private Int32 domicilioId;
        private String domicilioCalle;
        private String domicilioNumero;
        private String domicilioPiso;
        private String domicilioDepartamento;
        private Byte domicilioIdTipoDomicilio;
        private Int32 domicilioIdBarrio;

        private Int32 telefonoId;
        private String telefonoCodigoArea;
        private String telefonoNumero;
        private Byte telefonoIdTipoTelefono;
        private Int16 configuracionImagen;

        private List<String> domicilios;
        private List<String> telefonos;

        #endregion

        #region Propiedades

        [Browsable(false)]
        public Int32 IdUsuarioSistema
        {
            get { return Principal.IdUsuarioSistema; }
        }

        [Browsable(false)]
        public Int32 IdProveedor
        {
            get { return ucProveedor.IdProveedorSeleccionado; }
        }

        [Browsable(false)]
        public String Numero
        {
            get { return txtNumero.Text; }
        }

        [Browsable(false)]
        public String ProveedorDomicilio
        {
            get { return txtDomicilio.Text; }
            set { txtDomicilio.Text = value; }
        }

        [Browsable(false)]
        public String ProveedorTelefono
        {
            get { return txtTelefono.Text; }
            set { txtTelefono.Text = value; }
        }

        [Browsable(false)]
        public Decimal DescuentoRecargo
        {
            get { return numDescuentoRecargo.Value; }
            set { numDescuentoRecargo.Value = value; }
        }

        [Browsable(false)]
        public String Observaciones
        {
            get { return txtObservaciones.Text; }
        }

        [Browsable(false)]
        public Decimal AjusteSubTotal
        {
            get { return numSubTotal.Value; }
            set { numSubTotal.Value = value; }
        }

        [Browsable(false)]
        public Decimal AjusteIva
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        [Browsable(false)]
        public Decimal AjusteImpuestos
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        [Browsable(false)]
        public Decimal AjusteTotal
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        [Browsable(false)]
        public List<String> Domicilios
        {
            set
            {
                domicilios = value;
                btnDomicilio.Enabled = domicilios.Count > 0 ? true : false;
            }
        }

        [Browsable(false)]
        public List<String> Telefonos
        {
            set
            {
                telefonos = value;
                btnTelefono.Enabled = telefonos.Count > 0 ? true : false;
            }
        }

        #endregion

        #region Eventos

        private void btnDomicilio_Click(Object sender, EventArgs e)
        {
            var domiciliosSeleccionar = new DomiciliosSeleccionar(domicilios);
            if (domiciliosSeleccionar.ShowDialog() == DialogResult.OK)
                txtDomicilio.Text = domiciliosSeleccionar.Domicilio;
        }

        private void btnTelefono_Click(Object sender, EventArgs e)
        {
            var telefonosSeleccionar = new DomiciliosSeleccionar(domicilios);
            if (telefonosSeleccionar.ShowDialog() == DialogResult.OK)
                txtTelefono.Text = telefonosSeleccionar.Domicilio;
        }

        private void btnAgregar_Click(Object sender, EventArgs e)
        {
            var comprasAltaAgregar = new ComprasAltaAgregar();
            if (comprasAltaAgregar.ShowDialog() == DialogResult.OK)
            {
                switch (comprasAltaAgregar.Tipo)
                {
                    case ComprasAltaAgregar.TipoAgregar.Articulo:
                        if (new ComprasArticulos().ShowDialog() == DialogResult.OK)
                        {
                            //nuevo = true;
                        }
                        break;
                    //case ComprasAltaAgregar.TipoAgregar.Impuesto:
                    //    if (new ArticulosAltaModificacionServicio().ShowDialog() == DialogResult.OK)
                    //        nuevo = true;
                    //    break;
                    //case ComprasAltaAgregar.TipoAgregar.Otro:
                    //    if (new ArticulosAltaModificacionCompuesto().ShowDialog() == DialogResult.OK)
                    //        nuevo = true;
                    //    break;
                }
                //if (nuevo)
                //{
                //    bgwArticulos.RunWorkerAsync(MetodoHilo.Nuevo);
                //    procesando.ShowDialog();
                //}
            }
        }

        private void btnEditar_Click(Object sender, EventArgs e)
        {

        }

        private void btnQuitar_Click(Object sender, EventArgs e)
        {

        }

        private void btnAceptar_Click(Object sender, EventArgs e)
        {

        }

        private void btnCancelar_Click(Object sender, EventArgs e)
        {

        }

        private void ucProveedor_Seleccionado()
        {
            try
            {
                presentador.Proveedor();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ConfigurationManager.AppSettings["NombreAplicacion"], MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        #endregion

        private void chkAjusteManual_CheckedChanged(Object sender, EventArgs e)
        {
            numSubTotal.Enabled = chkAjusteManual.Checked;
            numIva.Enabled = chkAjusteManual.Checked;
            numImpuestos.Enabled = chkAjusteManual.Checked;
            numTotal.Enabled = chkAjusteManual.Checked;
        }

        private void grdDetalles_SelectionChanged(Object sender, EventArgs e)
        {

        }
    }
}
